home *** CD-ROM | disk | FTP | other *** search
- KERMIT UCMICRO is a modification of KERMIT UCSD (UCTERAK version)
- written by Kate MacGregor of Cornell University. UCMICRO was created by
- Tim Shimeall of the University of California, Irvine, to run on a Western
- Digital Pascal Microengine. Rather widespread, but superficial, changes
- were made in the translation from UCTERAK to UCMICRO KERMIT. This version
- of KERMIT is written entirely in UCSD Pascal, version III.0, under the Vol-
- ition Systems operating system. It should work on any Pascal Microengine,
- since no version-dependent features were used.
-
- The following files make up KERMIT UCMICRO:
- kermit.text - Main program (declarations, show, set and connect commands
- with file inclusion commands to bring in the rest of the
- files)
- wdforw.text - "forward" declarations for routins in wdprocs.text
- help.text - segment procedure to provide on-line assistance
- sendsw.text - segment procedure to send files
- recsw.text - segment procedure to receive files
- parse.text - segment procedure to parse user commands
- wdprocs.text - Pascal Microengine specific device drivers
- utils.text - general utitility functions
- rsutils.text - utitility functions shared by recsw and sendsw segments
- help.doc - this file.
-
- In the Kermit distribution, the .TEXT files are concatenated together
- into a single file, UCMICRO.PAS. In this file, each file begins with
- a line like {>>>> name}, as follows:
-
- {>>>> KERMIT.TEXT}
- {>>>>WDFORW.TEXT}
- {>>>> HELP.TEXT}
- {>>>> SENDSW.TEXT}
- {>>>> RECSW.TEXT}
- {>>>> PARSE.TEXT}
- {>>>>WDPROCS.TEXT}
- {>>>>UTILS.TEXT}
- {>>>>RSUTILS.TEXT}
-
- The Pascal Microengine has the UCSD P-System interpreter implemented in
- microcode. It therefore has no accessible assembly language, so routines
- that were done in assembler under the UCTERAK version had to be redone in
- Pascal for the UCMICRO version. These routines were adapted from a set
- written by Tim Shimeall for PCNET, and are contained in the file
- "wdprocs.text". Further, the Microengine is not interrupt-driven, so the
- "input queue" approach taken in the UCTERAK version had to be replaced by
- polling in the UCMICRO version. Once operating, the program had two per-
- sistant problems: a) it would run out of memory, causing a program halt
- after each file send and receive, and b) it wouldn't wait long enough for a
- packet to arrive. To free up more memory during file transfers, the com-
- mand parser was converted from a "unit" (seperately compiled library
- module) to a "segment procedure" (overlay segment). The UCTERAK KERMIT
- version used a retry counter for packet timing. The retry limit specified
- only allowed for a 1 second tolerance on the Pascal Microengine (a Microen-
- gine is about 4 times faster than a Terak). UCMICRO has a machine-
- dependent package timeout feature, using a retry counter in a loop of known
- duration as a clock.
-
- UCMICRO has the following limitations:
- a) No wild card designations of file names
- b) No eight-bit file quoting
- c) No character repeat counts
- d) No '?' and <esc> at the end of a command line.
- e) No server communications
- f) Sending and receiving cannot be done on anything but .TEXT files (which
- contain a two block header and space compression codes, and are
- divided into two-block "pages" which are padded with nulls to ensure
- an integral number of lines in each "page").
- g) Only one file is sent at a time (a break packet is sent after each
- file).
-
- KERMIT UCMICRO has been thoroughly tested in connections with UNIX
- KERMIT, but errors may persist. In particular, since polling has replaced
- interrupts in this version, characters may occasionally be lost. However,
- character loss has NOT been observed during testing of the final version of
- KERMIT UCMICRO.
-
- The commands recognized by KERMIT UCMICRO are the same as those for
- KERMIT UCTERAK.
-
- Another limitation on UCSD-KERMIT (shared between UCTERAK and the UCMICRO
- version): Each line in the file received can be no longer than 80 characters.
- There's a "quick fix" for this, but since I hope to make the file transfer
- capacity more general later on, I'll just list the fix here:
-
- To make the maximum length 255 chars instead of 80:
-
- 1) delete the first two statements and the declarations of
- the variables 'ls:integer' and 's:string' from the
- procedure "bufemp" in the file RSUTILS.TEXT
- 2) Add the following two statements to the procedure
- "initialize" in the file KERMIT.TEXT:
- s:=''; (* note: two single quotes with nothing between *)
- ls:=0;
- 3) change the declaration of "s:string" near line 129 of the
- file KERMIT.TEXT to
- s:string[255];
- 4) add the following line immediately after the declaration of
- "s:string[255]" (line 129 of KERMIT.TEXT):
- ls:integer;
-
- What this does is to move "s" and "ls" (length of s) out to become
- global declarations ("s" is otherwise unused), and to expand "s"'s
- maximum length to 255 (maximum allowed by UCSD).
-
- As I said, I hope to make a more general file transfer mechanism soon
- (which will permit data and code files to be transferred as well as
- text), but "soon" can be a relatively long period of time.
-
- Maybe this fix can also be made to the other UC versions of kermit.
- Tim
-